package com.javaee.ch10.dao;


import com.javaee.ch10.common.base.GenericDao;
import com.javaee.ch10.entity.User;
import org.springframework.stereotype.Component;

/**
 * 数据访问对象（DAO）类，用于管理 User 实体对象。 继承自 GenericDao，提供添加、删除、查询和更新 User 对象的基本功能。
 */
@Component
public class UserDao extends GenericDao<User> {

    public UserDao(){
        initializeUsers();
    }

    /**
     * 初始化 用户数据集合
     */
    private void initializeUsers() {
        // 插入4条用户数据
        this.addEntity(new User("admin", "11",1));
        this.addEntity(new User("user1", "password1",1));
        this.addEntity(new User("user2", "password2",1));
        this.addEntity(new User("user3", "password3", 1));
    }

    // 可以在这里添加 UserDao 特定的方法，例如根据用户名和密码校验用户身份等

    /**
     * 根据用户名和密码校验用户身份。
     *
     * @param username 用户名
     * @param password 密码
     * @return 如果用户存在且密码正确，则返回该用户对象；否则返回 null
     */
    public User authenticateUser(String username, String password) {
        System.out.println();
        // getAllEntities().stream()
                // .filter(user -> user.getUsername().equals(username) && user.getPassword().equals(password))
                // .findFirst().ifPresent(user -> System.out.println("User found: " + user));
        for (User user : getAllEntities()) {
            if (user.getUsername().equals(username) && user.getPassword().equals(password)) {
                return user;
            }
        }
        return null;
    }
}
